﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using _4.Modelado;

namespace _3.Datos.Finanzas
{
    public class DetIngresoEgresoBD
    {

        public void Det_MovimientoGuardar(SqlCommand comando, DetIngresoEgreso obj)
        {
            try
            {
                string sp = "usp_DetMovimientoGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_DetMovimiento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_EncMovimento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FK_RazonMovimiento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@DetMov_Monto", SqlDbType.Decimal));
                comando.Parameters.Add(new SqlParameter("@DetMov_RefInterna", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@DetMov_RefExterna", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@DetMov_Observacion", SqlDbType.VarChar));



                comando.Parameters[0].Value = obj.iPK_DetMovimiento;
                comando.Parameters[1].Value = obj.iFK_EncMovimento;
                comando.Parameters[2].Value = obj.iFK_RazonMovimiento;
                comando.Parameters[3].Value = obj.dcDetMov_Monto;
                comando.Parameters[4].Value = obj.sDetMov_RefInterna;
                comando.Parameters[5].Value = obj.sDetMov_RefExterna;
                comando.Parameters[6].Value = obj.sDetMov_Observacion;

                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {

                throw exc;
            }
        }


        public List<DetIngresoEgreso> Det_MovimientoConsultar(SqlCommand comando, int FK_EncMovimento)
        {
            try
            {
                string sp = "usp_DetMovimientoConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@FK_EncMovimento", SqlDbType.Int));
                comando.Parameters[0].Value = FK_EncMovimento;
                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<DetIngresoEgreso>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var obj = new DetIngresoEgreso();
                    obj.iPK_DetMovimiento = Convert.ToInt32(dt.Rows[i]["PK_DetMovimiento"]);
                    obj.iFK_EncMovimento = Convert.ToInt32(dt.Rows[i]["FK_EncMovimento"].ToString());
                    obj.iFK_RazonMovimiento = Convert.ToInt32(dt.Rows[i]["FK_RazonMovimiento"]);
                    obj.sRazonMovimiento = dt.Rows[i]["RazonMovDescripcion"].ToString();
                    obj.dcDetMov_Monto = Convert.ToDecimal(dt.Rows[i]["DetMov_Monto"].ToString());
                    obj.sDetMov_RefInterna = dt.Rows[i]["DetMov_RefInterna"].ToString();
                    obj.sDetMov_RefExterna = dt.Rows[i]["DetMov_RefExterna"].ToString();
                    obj.sDetMov_Observacion = dt.Rows[i]["DetMov_Observacion"].ToString();

                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }



        public DataTable LlenarComboTipoEgreso(SqlCommand comando)
        {
            try
            {
                string sp = "usp_Tipo_EgresoConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];


                return ds.Tables[0];
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }

        public void Det_MovimientoEliminar(SqlCommand comando, DetIngresoEgreso obj)
        {
            try
            {
                string sp = "usp_DetMovimientoEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_DetMovimiento", SqlDbType.Int));
                comando.Parameters[0].Value = obj.iPK_DetMovimiento;


                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }
    }
}
